#include "com_example_demo_jni_NativePrint.h"
#include "funTest.h"
#include <iostream>

JavaVM *gJvm = nullptr;

/**
 * 获取线程状态
 * @param env
 * @return
 */
jint getJNIEnvStat(JNIEnv *&env) { return gJvm->GetEnv((void **) &env, JNI_VERSION_1_8); }

extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
    // 保存jvm的全局引用
    gJvm = vm;
    std::cout << "加载JavaVM成功" << std::endl;

    // 可选：尝试获取JNIEnv实例以验证初始化
    JNIEnv *env = nullptr;
    // 获取当前线程的 JNIEnv 实例，验证能否获取到1.8版本的JNIEnv
    // JNI_OK (0) 表示操作成功，没有错误发生。
    if (getJNIEnvStat(env) != JNI_OK) {
        // JNI_ERR (-1) 表示未知错误，通常用于无法明确归类的异常情况。
        return JNI_ERR;  // 如果不能获取 JNIEnv，则返回错误
    }
    std::cout << "获取JNIEnv成功" << std::endl;

    return JNI_VERSION_1_8;  // 返回 JNI 版本
}

JNIEXPORT void JNICALL Java_com_example_demo_jni_NativePrint_print
  (JNIEnv *, jobject){
    printa();
  }